package com.bestcem.xm.txtanls.service;


import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.txtanls.entity.pojo.TopicDO;
import com.bestcem.xm.txtanls.grpc.service.param.topic.*;
import com.bestcem.xm.txtanls.service.dto.topic.TopicDataDTO;
import com.bestcem.xm.txtanls.service.dto.topic.TopicGroupDTO;

import java.util.List;

/**
 * 话题相关查询方法
 *
 * @author liheng
 * @version v1.0
 * @date 2021/5/10-17:24
 */
public interface TopicService {

    /**
     * 根据id获取话题
     * @param id
     * @return Topic
     * @author jy.zhao
     * @date 2021/8/11 21:11
     **/
    TopicDO getById(String id);

    /**
     * 查询话题组详情列表
     *
     * @param param@return
     * @author liheng
     * @date 2021/5/20 14:06
     */
    ServiceResult<List<TopicGroupDTO>> listGroupByProjectId(ListTopicGroupParam param);

    ServiceResult<List<TopicGroupDTO>> listGroupByProjectId2(ListTopicGroupParam param);


    /**
     * 保存话题/组
     *
     * @param param
     * @return
     * @author liheng
     * @date 2021/5/20 14:06
     */
    ServiceResult<String> saveTopic(CreateTopicParam param);

    /**
     * 修改话题/组
     *
     * @param param
     * @return
     * @author liheng
     * @date 2021/5/20 14:06
     */
    ServiceResult<String> updateTopic(UpdateTopicParam param);

    /**
     * 删除话题/组
     *
     * @param topicId
     * @return
     * @author liheng
     * @date 2021/5/20 14:06
     */
    ServiceResult<String> deleteTopic(String topicId);


    /**
     * 导出话题信息，话题组名-话题名-关键词，一个关键词为一条数据
     * 导出话题信息：格式为： 话题组名---话题名---关键词，
     * 例如： 美食  位置  近地铁
     * 美食  位置  通公交
     *
     * @param projectId
     * @return
     * @author liheng
     * @date 2021/5/20 14:06
     */
    ServiceResult<List<TopicDataDTO>> exportTopicData(String projectId);

    /**
     * 导入话题内容，会覆盖话题信息
     *
     * @param param
     * @return
     * @author liheng
     * @date 2021/5/20 14:06
     */
    ServiceResult<Object> importTopicData(ImportTopicParam param);


    /**
     * 移动话题到新建话题组或已存在话题组
     *
     * @param param
     * @return
     * @author liheng
     * @date 2021/5/20 20:05
     */
    ServiceResult<String> moveTopic(MoveTopicParam param);

    /**
     * 初始化话题
     *
     * @param projectId
     * @return void
     * @version v1.0
     * @author gy.liu
     * @date 2021/7/22
     */
    void initTopic(String projectId);
}
